package io.github.wslxm.springbootplus2.manage.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import io.github.wslxm.springbootplus2.core.base.model.BasePage;
import io.github.wslxm.springbootplus2.manage.sys.model.entity.SysNumber;
import io.github.wslxm.springbootplus2.manage.sys.model.vo.SysNumberVO;
import io.github.wslxm.springbootplus2.manage.sys.model.dto.SysNumberDTO;
import io.github.wslxm.springbootplus2.manage.sys.model.query.SysNumberQuery;

import java.util.List;

/**
 * 编号生成表 Service
 *
 * <p>
 * ::本代码由[兮家小二]提供的代码生成器生成,如有问题,请手动修改 ::作者CSDN:https://blog.csdn.net/qq_41463655
 * </p>
 * @author ws
 * @email 1720696548@qq.com
 * @date 2023-12-06 11:08:13
 */
public interface SysNumberService extends IService<SysNumber> {

    /**
     * 树结构数据查询
     *
     * @param query query
     * @return 分页列表数据
     */
    List<SysNumberVO> tree(SysNumberQuery query);

    /**
     * 列表查询
     *
     * @param query query
     * @return 分页列表数据
     */
    BasePage<SysNumberVO> findPage(SysNumberQuery query);

    /**
     * id 查询
     *
     * @param id id
     * @return NumberVO
     */
    SysNumberVO findId(String id);

    /**
     * 添加
     *
     * @param dto dto
     * @return 主键id
     */
    String insert(SysNumberDTO dto);

    /**
     * id 编辑
     *
     * @param id id
     * @param dto dto
     * @return boolean
     */
    boolean upd(String id, SysNumberDTO dto);

    /**
     * 删除 (同时删除下级数据)
     *
     * @param id id
     * @return boolean
     */
    boolean del(String id);



    /**
     * 生成编号 | 获取下一个编号 根据 code 指定配置
     *
     * @param code 代码
     * @return {@link String}
     */
    String generateNumber(String code);
}

